package it.amicosmanettone.assistenza.assistenzaitalia.mysql;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;

public class JSONParser {

	static InputStream is = null;
	static JSONObject jObj = null;
	static String json = "";
	String URL;

	// constructor
	public JSONParser() {

	}

	public JSONObject getJSONFromUrl(final String method, String url,
			final List<NameValuePair> params) {
		
		URL = url;

				// Making HTTP request
				try {
					// check for request method
					if (method.equals("POST")) {

						DefaultHttpClient httpClient = new DefaultHttpClient();
						HttpPost httpPost = new HttpPost(URL);
						httpPost.setEntity(new UrlEncodedFormEntity(params));

						HttpResponse httpResponse = httpClient
								.execute(httpPost);
						HttpEntity httpEntity = httpResponse.getEntity();
						is = httpEntity.getContent();
						

					} else if (method.equals("GET")) {

						DefaultHttpClient httpClient = new DefaultHttpClient();
						String paramString = URLEncodedUtils.format(params,
								"utf-8");
						URL += "?" + paramString;
						HttpGet httpGet = new HttpGet(URL);

						HttpResponse httpResponse = httpClient.execute(httpGet);
						HttpEntity httpEntity = httpResponse.getEntity();
						is = httpEntity.getContent();
					}

				} catch (UnsupportedEncodingException e) {
					e.printStackTrace();
				} catch (ClientProtocolException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}

				try {
					BufferedReader reader = new BufferedReader(
							new InputStreamReader(is, "iso-8859-1"), 8);
					
					StringBuilder sb = new StringBuilder();
					String line = null;
					while ((line = reader.readLine()) != null) {
						sb.append(line + "n");
					}
					is.close();
					json = sb.toString();
					
				} catch (Exception e) {
					Log.e("Buffer Error",
							"Error converting result " + e.toString());
				}

				// try parse the string to a JSON object
				try {
					jObj = new JSONObject(json);
					Log.e("JSON", "JSON --> " + jObj.toString(2));
				} catch (JSONException e) {
					Log.e("JSON Parser", "Error parsing data " + e.toString());
				}

		// return JSON String
		return jObj;

	}
}